Skip to main content

Longest Palidromic Substring

Problem Statement

Given a string s, return the longest palindromic substring in s.

Example 1:

Input: s = "babad" Output: "bab"

Explanation: "aba" is also a valid answer.

/**
* @param {string} s
* @return {string}
*/
var longestPalindrome = function(s) {
if (!s || s.length < 1) return "";

let start = 0;
let end = 0;

const expandAroundCenter = (left, right) => {
while (left >= 0 && right < s.length && s[left] === s[right]) {
left--;
right++;
}

return right - left - 1;
};

for (let i = 0; i < s.length; i++) {
let len1 = expandAroundCenter(i, i);
let len2 = expandAroundCenter(i, i + 1);
let len = Math.max(len1, len2);

if (len > end - start) {
start = i - Math.floor((len - 1) / 2);
end = i + Math.floor(len / 2);
}
}

return s.substring(start, end + 1);
};